﻿using System.ComponentModel.DataAnnotations;

namespace DotNetStar.OpenSDK.WeChat.MP
{
    /// <summary>
    /// 表示长链接转短链接的 api 请求。
    /// </summary>
    /// <remarks>
    /// 主要使用场景： 开发者用于生成二维码的原链接（商品、支付二维码等）太长导致扫码速度和成功率下降，将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。
    /// </remarks>
    /// <seealso cref="WeChatMPApiRequest{ShortUrlApiResponse}" />
    [HttpPost]
    public class ShortUrlApiRequest : WeChatMPApiRequest<ShortUrlApiResponse>
    {
        /// <summary>
        /// 初始化 <see cref="ShortUrlApiRequest"/> 类的新实例。
        /// </summary>
        /// <param name="accessToken">公众号的令牌字符串。</param>
        public ShortUrlApiRequest(string accessToken) : base($"https://api.weixin.qq.com/cgi-bin/shorturl?access_token={accessToken}", accessToken)
        {
        }

        /// <summary>
        /// 固定值 long2short。
        /// </summary>
        public string Action => "long2short";

        /// <summary>
        /// 需要转换的长链接，支持http://、https://、weixin://wxpay 格式的url
        /// </summary>
        [ArgumentName("long_url"),Required]
        public string LongUrl { get; set; }

        public override dynamic OnArgumentsCreating(dynamic keyValue) => keyValue.json();
    }
}
